package com.meixiang.util;

import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.StrikethroughSpan;
import android.widget.TextView;

import com.meixiang.R;

/**
 * TextView 文本显示工具类
 *
 * @author LZRUI
 */
public class TextViewUtil {

    /**
     * 给同一个TextView设置不同的颜色
     *
     * @param textView   文本控件
     * @param str        设置的文本
     * @param start      显示其他颜色的起始位置
     * @param end        显示其他颜色的终止位置
     * @param colorResId 颜色的资源id
     */
    public static void setDiffColorText(TextView textView, String str, int start, int end, int colorResId) {
        SpannableStringBuilder builder = new SpannableStringBuilder(str);
        ForegroundColorSpan spanColor = new ForegroundColorSpan(ContextCompat.getColor(textView.getContext(), colorResId));
        builder.setSpan(spanColor, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(builder);
    }

    /**
     * 同一个TextView设置不同字体大小
     *
     * @param textView 文本控件
     * @param str      设置的文本
     * @param start    显示其他字体大小的起始位置
     * @param end      显示其他字体大小的终止位置
     * @param textSize 字体大小
     */
    public static void setDiffSizeText(TextView textView, String str, int start, int end, int textSize) {
        SpannableStringBuilder builder = new SpannableStringBuilder(str);
        AbsoluteSizeSpan spanSize = new AbsoluteSizeSpan(DensityUtil.sp2px(textView.getContext(), textSize));
        builder.setSpan(spanSize, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(builder);
    }

    /**
     * 同一个TextView设置不同字体颜色以及字体大小
     *
     * @param textView   文本控件
     * @param str        设置的文本
     * @param start      显示其他字体大小的起始位置
     * @param end        显示其他字体大小的终止位置
     * @param colorResId 颜色的资源id
     * @param textSize   字体大小
     */
    public static void setDiffColorAndSizeText(TextView textView, String str, int start, int end, int colorResId, int textSize) {
        SpannableStringBuilder builder = new SpannableStringBuilder(str);
        ForegroundColorSpan spanColor = new ForegroundColorSpan(ContextCompat.getColor(textView.getContext(), colorResId));
        AbsoluteSizeSpan spanSize = new AbsoluteSizeSpan(DensityUtil.sp2px(textView.getContext(), textSize));
        builder.setSpan(spanColor, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        builder.setSpan(spanSize, start, end, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(builder);
    }

    /**
     * 给TextView设置删除线
     *
     * @param textView 文本控件
     * @param str      设置的文本
     */
    public static void setStrickoutText(TextView textView, String str) {
        SpannableString spanString = new SpannableString(str);
        StrikethroughSpan span = new StrikethroughSpan();
        spanString.setSpan(span, 0, str.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        textView.setText(spanString);
    }

    /**
     * 使文字左右两边对齐
     *
     * @param context   上下文
     * @param str       设置的文本
     * @param targetLen 目标长度
     * @return String
     */
    public static String setAlignBothSide(Context context, String str, int targetLen) {
        int len = str.length();
        StringBuilder sb = new StringBuilder();
        if (len < targetLen) {
            int left = len / 2;
            int right = len - left;
            int dif = targetLen - len;
            sb.append(str.substring(0, left));
            for (int i = 0; i < dif; i++) {
                sb.append(context.getString(R.string.space_str));
            }
            sb.append(str.substring(right));
        } else {
            sb.append(str);
        }
        return sb.toString();
    }

}
